The present invention relates to network technology. More specifically, this invention relates generally to network management and specifically relates to improving network based virtualization performance in a network implementing virtualization.
The concept of virtual memory has traditionally been used to enable physical memory to be virtualized through the translation between physical addresses in physical memory and virtual addresses in virtual memory. Recently, the concept of “virtualization” has been implemented in storage area networks through various mechanisms. Generally, a storage area network is a high-speed special-purpose network that interconnects different data storage devices and associated data hosts on behalf of a larger network of users. However, although a SAN enables a storage device to be configured for use by various network devices and/or entities within a network, data storage needs are often dynamic rather than static.
Within a storage area network, it is possible to couple a set of hosts (e.g., servers or workstations) to a pool of storage devices (e.g., disks). In SCSI parlance, the hosts may be viewed as “initiators” and the storage devices may be viewed as “targets.” A storage pool may be implemented, for example, through a set of storage arrays or disk arrays. Each disk array further corresponds to a set of disks. Rather than enabling all hosts to access all disks, it is desirable to enable the dynamic and invisible allocation of storage (e.g., disks) to each of the hosts via the disk arrays. In other words, physical memory (e.g., physical disks) may be allocated through the concept of virtual memory (e.g., virtual disks). This allows one to connect heterogeneous initiators to a distributed, heterogeneous set of targets (storage pool) in a manner enabling the dynamic and transparent allocation of storage.
Virtualization interconverts physical storage and virtual storage in a storage area network. The hosts (initiators) see virtual disks as targets. The virtual disks represent available physical storage in a defined but somewhat flexible manner. Virtualization provides hosts with a representation of available physical storage that is not constrained by certain physical arrangements/allocation of the storage.
Virtualization in the storage subsystem is one of the most common storage virtualization solutions in use today. Through this approach, virtual volumes are created over the storage space of a specific storage subsystem (e.g., disk array). Creating virtual volumes at the storage subsystem level provides host independence, since virtualization of the storage pool is invisible to the hosts. In addition, virtualization at the storage system level enables optimization of memory access and therefore high performance. However, such a virtualization scheme typically will allow a uniform management structure only for a homogenous storage environment and even then only with limited flexibility. Further, since virtualization is performed at the storage subsystem level, the physical-virtual limitations set at the storage subsystem level are imposed on all hosts in the storage area network. Moreover, each storage subsystem (or disk array) is managed independently. Virtualization at the storage level therefore rarely allows a virtual volume to span over multiple storage subsystems (e.g., disk arrays), thus limiting the scalability of the storage-based approach.
Another approach to virtualization in common use is the host-based approach. When virtualization is implemented on each host, it is possible to span multiple storage subsystems (e.g., disk arrays). The host-based approach has an additional advantage, in that a limitation on one host does not impact the operation of other hosts in a storage area network. However, virtualization at the host-level requires the existence of a software layer running on each host (e.g., server) that implements the virtualization function. Running this software therefore impacts the performance of the hosts running this software. Another key difficulty with this method is that it assumes a prior partitioning of the available storage to the various hosts. Since such partitioning is supported at the host-level and the virtualization function of each host is performed independently of the other hosts in the storage area network, it is difficult to coordinate storage access across the hosts. The host-based approach therefore fails to provide an adequate level of security. Due to this security limitation, it is difficult to implement a variety of redundancy schemes such as RAID which require the “locking” of memory during read and write operations. In addition, when mirroring is performed, the host must replicate the data multiple times, increasing its input-output and CPU load, and increasing the traffic over the SAN.
Virtualization in a storage area network appliance placed between the hosts and the storage, referred to as “network-based virtualization,” solves some of the difficulties of the host-based and storage-based approaches. The storage appliance globally manages the mapping and allocation of physical storage to virtual volumes. Typically, the storage appliance manages a central table that provides the current mapping of physical to virtual. Thus, the storage appliance-based approach enables the virtual volumes to be implemented independently from both the hosts and the storage subsystems on the storage area network, thereby providing a higher level of security. Moreover, this approach supports virtualization across multiple storage subsystems.
As set forth above, network-based virtualization (NBV) offloads the virtualization tasks such as mapping and locking from the host (or storage appliances) to the intelligent network. Specifically, virtualization tasks are implemented at a network device such as a switch. One method and system of implementing virtualization in a storage area network by a network device such as a switch are disclosed in application Ser. No. 10/056,238, entitled “Methods and Apparatus for Implementing Virtualization of Storage within a Storage Area Network,” filed on Jan. 23, 2002, by Gai et al and application Ser. No. 10/242,374, entitled “Methods and Apparatus for Implementing Exchange Management for Virtualization of Storage within a Storage Area Network,” filed on Sep. 11, 2002, by Chandrasekaran, et al, which are incorporated herein by reference for all purposes.
While network-based virtualization offloads the virtualization tasks to the intelligent network, this requires further processing to be performed within the network. As a result, network-based virtualization often substantially impacts the performance within the network. The key drawback of many implementations of this architecture is that every input/output (I/O) of every host must be sent through the storage area network appliance, causing significant performance degradation and a storage area network bottleneck. This is particularly disadvantageous in systems supporting a redundancy scheme such as RAID, since data must be mirrored across multiple disks. In another storage appliance-based approach, the appliance makes sure that all hosts receive the current version of the table. Thus, in order to enable the hosts to receive the table from the appliance, a software shim from the appliance to the hosts is required, adding to the complexity of the system. Moreover, since the software layer is implemented on the host, many of the disadvantages of the host-based approach are also present.
In view of the above, it would be beneficial if network-based virtualization performance could be improved.